package com.cyn.aframework.learning;


import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

public class QueryGrantTypeService {
 

    private GrantTypeSerive grantTypeSerive = new GrantTypeSerive();
    private Map<String, Function<String,String>> grantTypeMap=new HashMap<>();
 
    /**
     *  初始化业务分派逻辑,代替了if-else部分
     *  key: 优惠券类型
     *  value: lambda表达式,最终会获得该优惠券的发放方式
     */
//    Java中该注解的说明：@PostConstruct该注解被用来修饰一个非静态的void（）方法。
//    被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行，并且只会被服务器执行一次。
//    PostConstruct在构造函数之后执行，init（）方法之前执行。
//    @PostConstruct
    public void dispatcherInit(){
        grantTypeMap.put("红包",resourceId->grantTypeSerive.redPaper(resourceId));
        grantTypeMap.put("购物券",resourceId->grantTypeSerive.shopping(resourceId));
        grantTypeMap.put("qq会员",resourceId->grantTypeSerive.QQVip(resourceId));
    }
 
    public String getResult(String resourceType,String resourceId){
        //Controller根据 优惠券类型resourceType、编码resourceId 去查询 发放方式grantType
        Function<String,String> result=grantTypeMap.get(resourceType);
        if(result!=null){
         //传入resourceId 执行这段表达式获得String型的grantType
            return result.apply(resourceId);
        }
        return "查询不到该优惠券的发放方式";
    }

    public static void main(String[] args) {

    }
}